Package org.fto.jthink.sample.mboard

Source Code of org.fto.jthink.sample.mboard.MBoardBusinessBean

/*
* MBoardJBean.java 2005-10-14
*
* 版权所有: 自由思考组织(FTO)软件团队 2000-2005, 保留所有权利.
* 这个软件是自由思考组织(FTO)软件团队开发的,如果要使用这个软件,请首先阅读并接受许可协议。
*
* Copyright 2000-2005 FTO Software Team, Inc. All Rights Reserved.
* This software is the proprietary information of FTO Software Team, Inc.
* Use is subject to license terms.
*
* FTO站点:http://www.free-think.org
*/
package org.fto.jthink.sample.mboard;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.fto.jthink.exception.JThinkRuntimeException;
import org.fto.jthink.j2ee.web.HttpRequest;
import org.fto.jthink.j2ee.web.util.HTMLHelper;
import org.fto.jthink.jdbc.Column;
import org.fto.jthink.jdbc.Condition;
import org.fto.jthink.jdbc.ConditionItem;
import org.fto.jthink.jdbc.DataObject;
import org.fto.jthink.jdbc.JDBCTransaction;
import org.fto.jthink.jdbc.SQL;
import org.fto.jthink.jdbc.SQLBuilder;
import org.fto.jthink.jdbc.SQLExecutor;
import org.fto.jthink.jdbc.SQLExecutorEvent;
import org.fto.jthink.jdbc.SQLExecutorListener;
import org.fto.jthink.log.LogManager;
import org.fto.jthink.log.Logger;
import org.fto.jthink.resource.ResourceManager;
import org.fto.jthink.sample.mboard.po.Message;
import org.fto.jthink.transaction.TransactionFactory;
import org.fto.jthink.util.DateTimeHelper;

import com.opensymphony.xwork2.ActionContext;


/**
* 留言板,这个程序演示了对数据库的增、删、改、查等基本操作,以及如何从资源管理器中返回需要的资源,SQLExecutor监听器,
* 构建SQL语句,执行SQL语句,事务处理,日志处理等以及在1.0-M7中加入的DataObject的结果集处理方式。
*
*
*
* @author   wenjian
* @version  1.0
* @since    JThink Sample Message Board 1.0
* @see     JThink 1.0
*
*/
public class MBoardBusinessBean {
  /* 返回日志处理接口 */
  private static final Logger logger = LogManager.getLogger(MBoardBusinessBean.class);

  /* 资源管理器 */
  private ResourceManager resManager;
 
  /* 请求数据 */
  Map httpRequest = ActionContext.getContext().getParameters()
 
  /* JThink中定义的Http请求 */
  private HttpRequest request;
 
  /* JDBC事务 */
  private JDBCTransaction transaction;
  /* 用于执行SQL语句 */
  private SQLExecutor sqlExecutor;
  /* 用于构建SQL语句 */
  private SQLBuilder sqlBuilder;
  /* 在fto-jthink.xml中定义的事务ID */
  private static final String transId = "WebTransaction";
  /* 在fto-jthink.xml中定义的数据源连接ID */
  private static final String connId = "SampleDataSource";
 
  public MBoardBusinessBean() throws Exception{
    /* 创建资源管理器 */
    resManager = new ResourceManager();
    /* 返回定义的JDBC事务工厂,并创建事务 */
    transaction = (JDBCTransaction)((TransactionFactory)resManager.getResource(transId)).create();
    /* 创建SQLExecutor */
    sqlExecutor = transaction.getSQLExecutorFactory(connId).create();
    /* 设置SQLExecutor监听器 */
    sqlExecutor.addSQLExecutorListener(new SQLExecutorListener(){
      /* 监听器的事件方法,当在执行SQL语句时调用此方法 */
      public void executeSQLCommand(SQLExecutorEvent evt) {
        logger.debug(evt.getSQL().getSQLString());
      }
    });
    /* 创建SQLBuilder, 使用默认SQLBuilder */
    sqlBuilder = transaction.getSQLBuilderFactory(connId).create("");
  }
 
  /**
   * 返回留言信息, 分页,每页10行
   */
  public List searchMessages() throws Exception{
    try{
      transaction.begin();
     
      /* 构建SQL语句 */
      SQL sql = sqlBuilder.constructSQLForSelect("Messages", false, null, null, "", "SendTime desc", (getPageOffset()-1)*getPageRows(), getPageRows());
      /* 执行SQL语句,并返回结果 */
      List messages = (List)sqlExecutor.execute(sql, Message.class);
      Iterator messagesIT = messages.iterator();
      while(messagesIT.hasNext()){
        Message message = (Message)messagesIT.next();
//        message.setEmail(HTMLHelper.toHTMLString(message.getEmail()));
        //System.out.println("message.getRevertContent():"+message.getRevertContent());
//        message.setRevertContent(HTMLHelper.toHTMLString(message.getRevertContent()));
//        message.setReverter(HTMLHelper.toHTMLString(message.getReverter()));
//        message.setSender(HTMLHelper.toHTMLString(message.getSender()));
//        message.setSubject(HTMLHelper.toHTMLString(message.getSubject()));
//        message.setContent(HTMLHelper.toHTMLString(message.getContent()));
        message.setSendTime(DateTimeHelper.formatDateTimetoString(message.getSendTime()));
        message.setRevertTime(DateTimeHelper.formatDateTimetoString(message.getRevertTime()));
      }
      return messages;
    }finally{
      transaction.close();
    }
  }
 

 
  /**
   * 生成ID
   */
  private String generateID(){
    List maxIdLT = (List)sqlExecutor.executeQuery("SELECT MAX(ID) AS MAX_ID FROM Messages");
    DataObject maxIdDO = (DataObject)maxIdLT.iterator().next();
    if(maxIdDO.get("MAX_ID")==null){
      return "1";
    }
    return String.valueOf(Integer.parseInt(maxIdDO.get("MAX_ID"))+1);
  }
 
  /**
   * 发送留言信息
   */
  public void sendMessage(Message message) throws Exception{
    try{
      /* 开始事务 */
      transaction.begin();
     
      message.setId(generateID());
      message.setSendTime(DateTimeHelper.formatDateTimetoString(DateTimeHelper.getSystemDate()));
      SQL sql = sqlBuilder.constructSQLForInsert(message);
     
      /* 执行SQL语句 */
      sqlExecutor.execute(sql);
     
      /* 提交事务 */
      transaction.commit();
    }catch(Exception e){
      /* 回退事务 */
      transaction.rollback();
      throw e;
    }finally{
      /* 关闭事务 */
      transaction.close();
    }
  }

 
  /**
   * 返回回复信息
   * @throws Exception
   */
  public Message getRevertInfo() throws Exception{
    try{
      transaction.begin();
     
      /* 返回的列 */
      Column[] column = {
        new Column("RevertContent"),
        new Column("Reverter"),
      };
     
      /* 条件 */
      Condition condition = new Condition();
      condition.add(new ConditionItem("ID","=", request.getParameter("ID")));
     
      /* 构建SQL语句 */
      SQL sql = sqlBuilder.constructSQLForSelect("Messages", column, condition);
      /* 执行SQL语句,并返回结果 */
      Iterator it = ((List)sqlExecutor.execute(sql, Message.class)).iterator();
     
      if(it.hasNext()){
        return (Message)it.next();
      }else{
        throw new Exception("留言信息不存在,可能已经被删除!");
      }
    }finally{
      transaction.close();
    }

  }
 
  /**
   * 回复留言信息
   */
  public void revertMessage() throws Exception{
   
   
    try{
      /* 开始事务 */
      transaction.begin();
     
//      HashMap msgsHM = new HashMap();
//      String revertContent = request.getParameter("RevertContent");
//      if(revertContent!=null){
//        msgsHM.put("RevertContent",revertContent);
//      }else{
//        msgsHM.put("RevertContent","");
//      }
//      String reverter = request.getParameter("Reverter");
//      if(reverter!=null){
//        msgsHM.put("Reverter",reverter);
//      }else{
//        msgsHM.put("Reverter","");
//      }
//      msgsHM.put("RevertTime", DateTimeHelper.formatDateTimetoString(DateTimeHelper.getSystemDate()));
//
//      Condition condition = new Condition();
//      condition.add(new ConditionItem("ID","=", request.getParameter("ID")));
//     
     
      Message message = new Message();
      message.setRevertContent(request.getParameter("RevertContent"));
      message.setReverter(request.getParameter("Reverter"));
      message.setRevertTime(DateTimeHelper.formatDateTimetoString(DateTimeHelper.getSystemDate()));
      message.setId(request.getParameter("ID"));
     
      SQL sql = sqlBuilder.constructSQLForUpdate(message);
      /* 执行SQL语句 */
      sqlExecutor.execute(sql);
     
      /* 提交事务 */
      transaction.commit();
    }catch(JThinkRuntimeException e){
      e.getCause();
    }catch(Exception e){
      /* 回退事务 */
      transaction.rollback();
      throw e;
    }finally{
      /* 关闭事务 */
      transaction.close();
    }
  }
  /**
   * 删除留言信息
   */
  public void deleteMessage() throws Exception{
    try{
      /* 开始事务 */
      transaction.begin();
     
//      Condition condition = new Condition();
//      condition.add(new ConditionItem("ID","=", request.getParameter("ID")));
      Message message = new Message();
      message.setId(request.getParameter("ID"));
      SQL sql = sqlBuilder.constructSQLForDelete(message);
     
      /* 执行SQL语句 */
      sqlExecutor.execute(sql);
     
      /* 提交事务 */
      transaction.commit();
    }catch(Exception e){
      /* 回退事务 */
      transaction.rollback();
      throw e;
    }finally{
      /* 关闭事务 */
      transaction.close();
    }
  }

  /**
   * 返回留言的总行数
   */
  public int getPageTotalRows(){
    String pageRowTotal = (String)httpRequest.get("PAGE_ROW_TOTAL");
    if(pageRowTotal!=null){
      return Integer.parseInt(pageRowTotal);
    }
    try{
      transaction.begin();
     
      /* 构建SQL语句 */
      SQL sql = sqlBuilder.constructSQLForCount("Messages", "*", "ROW_COUNT", null);
      DataObject countDO = (DataObject)((List)sqlExecutor.execute(sql)).iterator().next();
      return Integer.parseInt(countDO.get("ROW_COUNT"));
     
    }finally{
      transaction.close();
    }
  }
 
  /**
   * 返回当前页偏移
   */
  public int getPageOffset(){
    String pageOffset = (String)httpRequest.get("PAGE_OFFSET");
    return pageOffset!=null?Integer.parseInt(pageOffset):1;
  }
 
  /**
   * 返回每页显示的记录行数
   */
  public int getPageRows(){
    return 10;
  }
 
  /**
   * 返回总页数
   */
  public int getPages(int pageTotalRows){
    return pageTotalRows/getPageRows() + ((pageTotalRows%getPageRows())>0?1:0);
  }
 
  /**
   * 返回记录序号
   */
  public int getSeqNo(int i){
    return (getPageOffset()-1)*getPageRows()+i+1;
  }
 
}
TOP

Related Classes of org.fto.jthink.sample.mboard.MBoardBusinessBean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.